1 module about_foreach; 2 3 import dunit; 4 import helpers; 5 6 class AboutForeach 7 { 8 mixin UnitTest; 9 10 @Test 11 public void arrays_iteration() { 12 auto array = [3, 4, 5, 6]; 13 14 foreach(x; array){ // simple iteration, what is the scope of 'x'? 15 x = x * 2; 16 } 17 assertEquals(array[0], FILL_IN_THIS_NUMBER); 18 19 foreach(ref x ; array) { // what is changed ? 20 x = x * 2; 21 } 22 assertEquals(array[0], FILL_IN_THIS_NUMBER); 23 } 24 25 @Test 26 public void strings_iteration() { // in D, string are immutable arrays of chars 27 char k; 28 29 foreach(c; "this is a short string") { 30 k = c; 31 } 32 33 assertEquals(k, FILL_IN_THIS_CHAR); 34 } 35 36 @Test 37 public void foreach_with_associative_arrays() { 38 int[string] aa; 39 string s; 40 int v; 41 42 aa["Torvalds"] = 1969; 43 aa["Stallman"] = 1953; 44 aa["Kernighan"] = 1942; 45 aa["Ritchie"] = 1941; 46 47 foreach (key, value; aa) { 48 s ~= key[0]; 49 v += value - 1900; 50 } 51 52 assertEquals(s, FILL_IN_THIS_STRING); 53 assertEquals(v, FILL_IN_THIS_NUMBER); 54 } 55 56 57 } 58